/*
   Copyright (c) 2020, zoomdy
   MicroAmpereII is licensed under Mulan PSL v2.
   You can use this software according to the terms and conditions of the Mulan PSL v2.
   You may obtain a copy of Mulan PSL v2 at:
            http://license.coscl.org.cn/MulanPSL2
   THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
   EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
   MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
   See the Mulan PSL v2 for more details.
 */

#ifndef ZOOMDY_HAL_CDC_H__
#define ZOOMDY_HAL_CDC_H__

#include <stdint.h>
#include <stdlib.h>

#include "hal_err.h"

#define HAL_CDC_PACKET_SIZE         64 /* 应该等于 CDC_ACM_DATA_PACKET_SIZE */

typedef struct hal_cdc_req_s
{
    struct hal_cdc_req_s* next;
    uint8_t* buffer;
    size_t length;
    hal_err_t err;
}hal_cdc_req_t;

hal_err_t hal_cdc_recv(hal_cdc_req_t* req);
hal_err_t hal_cdc_send(hal_cdc_req_t* req);

static inline hal_err_t hal_cdc_error(hal_cdc_req_t* req)
{
    return req->err;
}

#endif /* ZOOMDY_HAL_CDC_H__ */
